public class ArryReverse {
    public static void main(String[] args) {
        //要求：把数组元素内容反转。arr = {11, 22, 33, 44, 55, 66};----->{66, 55, 44, 33, 22, 11}
        int[] arr = {11, 22, 33, 44, 55, 66};
        /*思路一：通过规律反转
        1. 把 arr[0] 和 arr[5] 进行交换 {66, 22, 33, 44, 55, 11}
        2. 把 arr[1] 和 arr[4] 进行交换 {66, 55, 33, 44, 22, 11}
        3. 把 arr[2] 和 arr[3] 进行交换 {66, 55, 44, 33, 22, 11}
        4. 一共交换 3 次 = arr.length/2
        5. 每次交换时，对应的下标是arr[i] 和 arr[arr.length-1-i]
        * */
        int temp = 0;
        int len = arr.length;
        for (int i = 0; i < len/2; i++) {
            temp = arr[i];
            arr[i] = arr[len-1-i];
            arr[len-1-i] = temp;
        }
        System.out.println("反转后的数组");
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i] +"\t");//66, 55, 44, 33, 22, 11
        }
        /*思路二：使用逆序赋值方式
        1. 先创建一个新的数组 arr[2] ,大小arr.length
        2. 逆序遍历 arr ,将每个元素拷贝到 arr2 的元素当中
        3.建议循环增加一个循环变量 j --> 0 --> 5
        4. 当for循环结束后 arr2 就是一个逆序数组 {66, 55, 44, 33, 22, 11}
        5.让 arr 指向 arr2 的数据空间，此时 arr 原来的数据空间就就没有被变量引用，会被当作 垃圾销毁
         * */
        int[] arr1 = {11, 22, 33, 44, 55, 66};
        int[] arr2 = new int[arr1.length];
        for (int i = arr1.length-1, j=0; i >=0 ; i--,j++) {
            arr2[j] = arr1[i];
        }
        arr1 = arr2;
        System.out.println("反转后的数组");
        for (int i = 0; i < arr1.length; i++) {
            System.out.println(arr1[i] +"\t");
        }
    }
}
